package fassa

import org.springframework.dao.DataIntegrityViolationException

class TrabalhoController {

    static allowedMethods = [save: "POST", update: "POST", delete: "POST"]

    def index() {
        redirect(action: "list", params: params)
    }

    def list() {
        params.max = Math.min(params.max ? params.int('max') : 10, 100)
        [trabalhoInstanceList: Trabalho.list(params), trabalhoInstanceTotal: Trabalho.count()]
    }

    def create() {
        [trabalhoInstance: new Trabalho(params)]
    }

    def save() {
        def trabalhoInstance = new Trabalho(params)
        if (!trabalhoInstance.save(flush: true)) {
            render(view: "create", model: [trabalhoInstance: trabalhoInstance])
            return
        }

		flash.message = message(code: 'default.created.message', args: [message(code: 'trabalho.label', default: 'Trabalho'), trabalhoInstance.id])
        redirect(action: "show", id: trabalhoInstance.id)
    }

    def show() {
        def trabalhoInstance = Trabalho.get(params.id)
        if (!trabalhoInstance) {
			flash.message = message(code: 'default.not.found.message', args: [message(code: 'trabalho.label', default: 'Trabalho'), params.id])
            redirect(action: "list")
            return
        }

        [trabalhoInstance: trabalhoInstance]
    }

    def edit() {
        def trabalhoInstance = Trabalho.get(params.id)
        if (!trabalhoInstance) {
            flash.message = message(code: 'default.not.found.message', args: [message(code: 'trabalho.label', default: 'Trabalho'), params.id])
            redirect(action: "list")
            return
        }

        [trabalhoInstance: trabalhoInstance]
    }

    def update() {
        def trabalhoInstance = Trabalho.get(params.id)
        if (!trabalhoInstance) {
            flash.message = message(code: 'default.not.found.message', args: [message(code: 'trabalho.label', default: 'Trabalho'), params.id])
            redirect(action: "list")
            return
        }

        if (params.version) {
            def version = params.version.toLong()
            if (trabalhoInstance.version > version) {
                trabalhoInstance.errors.rejectValue("version", "default.optimistic.locking.failure",
                          [message(code: 'trabalho.label', default: 'Trabalho')] as Object[],
                          "Another user has updated this Trabalho while you were editing")
                render(view: "edit", model: [trabalhoInstance: trabalhoInstance])
                return
            }
        }

        trabalhoInstance.properties = params

        if (!trabalhoInstance.save(flush: true)) {
            render(view: "edit", model: [trabalhoInstance: trabalhoInstance])
            return
        }

		flash.message = message(code: 'default.updated.message', args: [message(code: 'trabalho.label', default: 'Trabalho'), trabalhoInstance.id])
        redirect(action: "show", id: trabalhoInstance.id)
    }

    def delete() {
        def trabalhoInstance = Trabalho.get(params.id)
        if (!trabalhoInstance) {
			flash.message = message(code: 'default.not.found.message', args: [message(code: 'trabalho.label', default: 'Trabalho'), params.id])
            redirect(action: "list")
            return
        }

        try {
            trabalhoInstance.delete(flush: true)
			flash.message = message(code: 'default.deleted.message', args: [message(code: 'trabalho.label', default: 'Trabalho'), params.id])
            redirect(action: "list")
        }
        catch (DataIntegrityViolationException e) {
			flash.message = message(code: 'default.not.deleted.message', args: [message(code: 'trabalho.label', default: 'Trabalho'), params.id])
            redirect(action: "show", id: params.id)
        }
    }
	def upload(){
	
	
	if (!file.empty) { 
			def arquivo = new Arquivo()
			arquivo.file = file
			arquivo.webRootDir = servletContext.getRealPath("/")
			arquivo.dataAlteracao = new Date()
			
			if (arquivo.isTypeOk() && arquivo.isSizeOk()) {
				arquivo.transferToServer()
			} else {
				trabalhoInstance.errors.putAt("arquivos", "error.arquivo.invalido")
				render(view: "upload", model: [trabalhoInstance: trabalhoInstance])
				return
			}
				if (!trabalhoInstance.addToArquivos(arquivo).save(flush: true)) {
					render(view: "upload", model: [trabalhoInstance: trabalhoInstance])
					return
			}
		} else {
			trabalhoInstance.errors.putAt("tipo", "error.tipo.arquivoInexistente")
			render(view: "upload", model: [trabalhoInstance: trabalhoInstance])
			return
		}
      
		flash.message = message(code: 'default.created.message', args: [message(code: 'trabalho.label', default: 'Trabalho'), trabalhoInstance.id])
        redirect(action: "upload", id: trabalhoInstance.id)
    	
    }
	    
    
}
